package com.remote.module.controller;

import com.xxl.job.admin.provider.dto.XxlJobInfoDto;
import com.xxl.job.admin.provider.service.JobApiService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

@Slf4j
@RestController
@RequestMapping(value = "/v1/banner")
public class SaveJobController {

    @Resource
    private JobApiService jobApiService;

    /**
     * 保存banner图
     * @return
     */
    @PostMapping(value = "/save")
    public Boolean save(){
        // 1.新增轮播图 -> 保存到数据库
        // 该轮播图 包含
        log.info("新增轮播图逻辑成功");

        // 2.新增定时任务
        XxlJobInfoDto xxlJobInfoDto = new XxlJobInfoDto();
        xxlJobInfoDto.setJobGroup(1);
        xxlJobInfoDto.setJobDesc("测试接口新增任务");
        Integer jobId = jobApiService.save(xxlJobInfoDto);

        // 3.新增轮播图和定时任务关联表
        // 业务和任务关联表：用于绑定业务ID和任务ID的关系，如新增banner有个banner主键Id和新增任务返回一个任务ID
        // 将其两个主键ID绑定关联起来，后续用于修改和删除任务。其中的tableId字段用于区分业务的主键ID，
        // 如同时新增轮播图表和秒杀广告表，它们的主键ID都为1，此时就需要一个tableId用于区分时哪个业务功能
        // tableId可以是枚举值如1-banner；2-sckill；。。。
        // 必须包含以下几个字段：id、table_id、business_id、job_id
        log.info("保存数据库：绑定轮播图id和任务关联的id成功，用于修改删除业务时同步修改删除任务。 jobId:{}", jobId);

        return true;
    }

    public Boolean modify() {
        // 1.修改轮播图信息，如生效时间（开始时间、结束时间）

        // 2.根据tableId和businessId 查询业务和任务关联表拿到jobId

        // 3.根据jobId修改任务的生效开始时间和结束时间
        return true;
    }

    public Boolean delete() {
        // 1.删除轮播图

        // 2.根据tableId和businessId 查询业务和任务关联表拿到jobId

        // 3.根据jobId删除任务表任务
        return true;
    }
}
